Hãy tưởng tượng bạn là một kiến trúc sư. Thay vì vẽ một bản vẽ cố định cho một ngôi nhà gạch đơn lẻ, bạn thiết kế một bản thiết kế chính bản thiết kế có thể thích nghi với gỗ, thép hoặc kính. Trong C++, điều này được gọi là Lập trình tổng quát.
1. Cơ chế bản thiết kế
Một danh sách tham số mẫu (ví dụ, template <typename T>) giới thiệu các chỗ trống được gọi là các tham số kiểu mẫu. Chúng hoạt động như các biến cho kiểu dữ liệu. Ví dụ, trong template <typename T> ostream &print(ostream &os, const T &obj), T được xác định chỉ khi hàm được gọi.
2. Khởi tạo
Trình biên dịch không biên dịch chính mẫu thành mã máy. Thay vào đó, khởi tạo xảy ra: trình biên dịch tạo ra một phiên bản cụ thể của mã chỉ khi có một tham số mẫu được cung cấp. Vì lý do này, các định nghĩa thường phải nằm trong các tệp tiêu đề.
3. Viết mã độc lập kiểu dữ liệu
Để tối đa hóa khả năng tái sử dụng, hãy tuân theo Thực hành tốt nhất: tối thiểu hóa yêu cầu. Viết mã bằng cách chỉ sử dụng toán tử < toán tử (thông qua less<T>) làm giảm yêu cầu đối với kiểu dữ liệu so với việc sử dụng >, <=, và >=. Xác thực thường bị trì hoãn; trình biên dịch thông thường không thể phát hiện nhiều lỗi ở giai đoạn biên dịch chính mẫu; phần lớn xuất hiện trong quá trình khởi tạo.